Fjerne advarsler og meldinger fra en RMarkdownfil

Makdown RMarkdown chunk options R knitr

Når vi jobber i RMarkdown vil vi ikke alltid ha alle feilmeldingene som kommer. I denne posten går jeg gjennom hvordan man kan spesifisere hvilke typer meldinger man vil ha med i den endelige fila. Jeg viser både hvordan man kan bestemme dette for hver chunk og hvordan man kan spesifisere det for hele dokumentet.

Øyvind Bugge Solheim
2023-08-29

Markdown og varsler i R

Når vi jobber i RMarkdown kombinerer vi som regel ren tekst, markdown og chunker med R-kode. Dette er et eksempel på en nettside generert med RMarkdown.1 Et irritasjonsmoment i RMarkdown er at vi noen ganger får for mange feilmeldinger eller informasjonsmeldinger som legger seg inn i det genererte dokumentet. Når vi bare jobber med R er det fint med varsler, men når vi lager en pdf eller hmtl-fil er det upraktisk. Selv om vi kanskje spesifiserer noen typer informasjon vi ikke ønsker i headerne på chunkene hender det vi likevel ikke blir kvitt alle typer informasjonsmeldinger i dokumentet vårt. I denne posten viser jeg hvordan man fjerner slike meldinger for alle chunkene i et dokument.

Vi begynner som regel r-kode med å spesifisere ulike typer pakker for vi vil ha med. Under laster inn tidyverse. Når jeg ikke sier noe spesifikt om hvilken informasjon jeg ønsker i chunken får vi både koden gjentatt i dokumentet og vi får en fin melding om hvilke tidyverse-pakker som er lastet inn og hvilke konflikter som har oppstått med andre pakker. Jeg lager en warning for å vise at disse også blir inkludert i outputen.

── Attaching core tidyverse packages ──── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.4.4     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
warning("Denne advarselen synes")
Warning: Denne advarselen synes

Fjerne output fra enkeltchunker

Vi kan spesifisere i headeren på chunken hvilken informasjon vi vil se. I chunken under har jeg sagt at jeg ikke vil se warning: {r Ingen advarsler, warning=FALSE}.

warning("Denne advarselen synes ikke")

message("Meldinger er fortsatt påskrudd")
Meldinger er fortsatt påskrudd

Fjerne output fra hele dokumentet

Hvis vi imidlertid vil ta vekk alle ulike typer varsler fra hele dokumentet kan vi spesifisere det i en chunk. Det må spesifiseres i starten av dokumentet for å gjelder hele veien. NB: Quarto-brukere bør se nederst for spesifikk Quarto-kode. Hvis vi ikke vil at chunken skal synes selv må vi spesifisere det i headeren på setup-chunken. Her har jeg skrudd av warning, message og comment, men jeg har beholdt echo = TRUE slik at innholdet i chunken fortsatt skal vises. Hvis man setter det som echo = FALSE vil ikke r-koden i hver enkelt chunk vises.

knitr::opts_chunk$set(
  echo = TRUE,
  warning = FALSE,
  message = FALSE,
  comment = FALSE
)

Vi ser at outputen fra library(data.table) ikke blir vist. Her ville det til vanlig være forklart hvilke funksjoner fra tidyverse som data.table erstatter. Bare r-koden selv i chunken er med på grunn av echo = TRUE over.

# Ikke noen beskjeder fra library:

library(data.table)

warning("Denne advarselen synes ikke")

message("Meldinger er skrudd av")

Oppdatering om Quarto

Siden Quarto er det nye store innen markdown og R er det greit å ta med at Quarto har en mer praktisk måte å løse problemet på. I Quarto kan du bestemme hvor mye output du vil ha i selve yaml-teksten i starten av dokumentet. Da slipper man å spesifisere noe mer i dokumentet enn i de første linjene. Eksempelet under er inspirert av denne blogposten hos Jumping Rivers:

title: "Introduksjon"
format: pdf
execute: 
  echo: false
  warning: false
  message: false
  comment: false

  1. Distill som driver siden har imidlertid andre standarder og skrur av warning og message som standard. For å lage denne teksten måtte jeg først skru det på i den første chunken.↩︎

Citation

For attribution, please cite this work as

Solheim (2023, Aug. 29). Solheim: Fjerne advarsler og meldinger fra en RMarkdownfil. Retrieved from https://www.oyvindsolheim.com/code/chunk options/

BibTeX citation

@misc{solheim2023fjerne,
  author = {Solheim, Øyvind Bugge},
  title = {Solheim: Fjerne advarsler og meldinger fra en RMarkdownfil},
  url = {https://www.oyvindsolheim.com/code/chunk options/},
  year = {2023}
}